package bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import persistence.FuncionarioDao;

import entity.Funcionario;
import entity.Usuario;
@ManagedBean(name="funcMB")
@SessionScoped
public class FuncionarioMB {
	
	private Funcionario funcionario;
	private List<Funcionario> listaFunc;
	private Usuario usuario;
	
	public FuncionarioMB() {
		
		funcionario = new Funcionario();
		usuario = new Usuario();
	}
	
	
	public Usuario getUsuario() {
		return usuario;
	}



	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}



	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public List<Funcionario> getListaFunc() {
		try {
			listaFunc = new FuncionarioDao().listarFunc();
		} catch (Exception e) {
			// TODO: handle exception
		}
		return listaFunc;
	}

	public void setListaFunc(List<Funcionario> listaFunc) {
		this.listaFunc = listaFunc;
	}
	
	public String cadastrar(){
		FacesContext fc = FacesContext.getCurrentInstance();
		try{
			
			FuncionarioDao fd = new FuncionarioDao();
						
			funcionario.setUsuarioFunc(usuario);
			usuario.setFuncionario(funcionario);
			fd.cadastrarFunc(funcionario);
			
			fc.addMessage("funcionario", new FacesMessage("DADOS FUNCIONARIO", "Funcionario cadastrado com sucesso!"));
			funcionario = new Funcionario();
			usuario = new Usuario();
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			fc.addMessage("funcionario", new FacesMessage("Erro ao cadastrar", e.getMessage()));
			
		}
		return null;
	}
	
	public String excluir(){
		FacesContext fc = FacesContext.getCurrentInstance();
		try {
			FuncionarioDao fd = new FuncionarioDao();
			fd.excluirFunc(funcionario);
			fc.addMessage("form", new FacesMessage("DADOS FUNCIONARIO", "Funcionario excluido com sucesso!"));
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			fc.addMessage("form", new FacesMessage("Erro ao excluir", e.getMessage()));
		}
		return null;
	}
	
	public void redireciona(){
		FacesContext fc = FacesContext.getCurrentInstance();
		try {
			
			fc.getExternalContext().redirect("editarFunc.jsf");
		} catch (Exception e) {
			// TODO: handle exception
		}
		
	}
	
	public String editar(){
		FacesContext fc = FacesContext.getCurrentInstance();
		try {
			FuncionarioDao fd = new FuncionarioDao();
			funcionario.setUsuarioFunc(usuario);
			usuario.setFuncionario(funcionario);
			fd.editarFunc(funcionario);
			fc.addMessage("form", new FacesMessage("DADOS FUNCIONARIO", "Funcionario editado com sucesso!"));
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			fc.addMessage("form", new FacesMessage("Erro ao editar", e.getMessage()));
		}
		return "voltar";
		
	}

}
